home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus Special 18
/
AMIGAplus Sonderheft 18 (1999)(ICP)(DE)[!].iso
/
Forum
/
MichaelRoth
/
3-3-99
/
pw
/
passwort.asm
< prev
next >
Wrap
Assembly Source File
|
1998-08-15
|
6KB
|
205 lines
;// Autor
; %
; %%*%%
; %%%* *%%%
; %%%%* B *%%%%
; %%%%%* T *%%%%%
; %%%%%%* B *%%%%%%
; %%%%%%%* 1 *%%%%%%%
; %%%%%%%%* 3 *%%%%%%%%
; *%%%%%%%%%%* M *%%%%%%%%%%*
; %%%%%%%%%%%%*---------------*%%%%%%%%%%%%
; %% A M I G A %%
; %% B i l l y T h e B y t e %%
; %% © 1997 Michael Roth %%
; %%%%%%%%%%%%*---------------*%%%%%%%%%%%%
; *%%%%%%%%%%* D *%%%%%%%%%%*
; %%%%%%%%* A *%%%%%%%%
; %%%%%%%* C *%%%%%%%
; %%%%%%* 6 *%%%%%%
; %%%%%* 9 *%%%%%
; %%%%* 8 *%%%%
; %%%* *%%%
; %%*%%
; %
;\\
xref _aslfilereq
anzahlzeich equ 5
maxlength equ 80
;// Include
Include assem:macro/Dir
Include assem:macro/Exec.m
Include assem:macro/Dos.m
Include reqtool.m
Include asl.m
;\\
;//Open Libs
OpenDos 0
bne .12
rts
.12
OpenReqTool 38
bne .1
rts
.1
;\\
;// FileReq
lea asltag,a0
lea filename,a1
move.l #512,d3
bsr _aslfilereq ; written by DAC698
;\\
;// Request
lea positionen,a1
move.l #80,d0
lea reqtitle,a2
move.l #0,a3
lea reqtag,a0
reqtool rtGetStringA
;\\
;// File Öffnen und lesen
move.l #filename,d1
move.l #MODE_OLDFILE,d2
Dos Open
bne .openok
bra cleanup
.openok
move.l d0,fh
move.l d0,d1
move.l #outputpuffer,d2
move.l #maxlength,d3
Dos Read
;\\
;// Auswerten der Eingabe in Zahlen
; Schwäche der Routine: wenn ein User scshwachsinniger weise mehr als 80 Zeichen
; verbraucht: Enfocer htt, da ich dann fremde sachen auslese...
lea positionen,a3
lea outputpuffer,a4
lea outputpuffer2,a5
.loop
cmp.b #"9",(a3)+ ; Alle Zeichen vor erster
bhi .loop ; Zahl weglassen
cmp.b #"0",-1(a3)
blo .loop
lea -1(a3),a3 ; Adresse wegen einem (ax)+ zuviel
; reduzieren
move.w #anzahlzeich-1,d6 ; Durchläufe -1 wegen DBcc
.loop1
move.l a3,d7 ; startadresse merken
.loop2
cmp.b #"9",(a3)+ ; Endadresse auswerten
bhi.s .next
cmp.b #"0",-1(a3) ; Endadresse auswerten
blo.s .next
; cmp.b #0,-1(a3) ; Prüfen ob 0 Byte
; beq cleanup ; Wenn ja String zu ende bevor alles geschliffen ist -> Abbruch
bra .loop2 ; Nexte schleife
.next
move.b #0,-1(a3) ; NullByte Setzen
move.l d7,d1 ; Startadresse nach d1 (Ist nun ein Nullterminirter Str)
move.l #zahl,d2 ; Buffer nach D2
Dos StrToLong ; Wandeln lassen (Zufaul das selbst zu tun)
move.l zahl,d2 ; Zal nach D2
move.b -1(a4,d2.l),(a5)+ ; Auslesen des Zeichens. 1 in realität entspricht 0 bei Computer; deswegen -1(xxx)
dbra d6,.loop1 ; Nexte schleife
;\\
;// Schreiben des Passwortsfragmentes nach fileout
move.l #fileout,d1
move.l #MODE_NEWFILE,d2
Dos Open
move.l d0,d7
bne .openok2
bra cleanup
.openok2
move.l d0,d1
move.l #outputpuffer2,d2
move.l #anzahlzeich+1,d3
Dos Write
move.l d7,d1
Dos Close
;\\
;//cleanup
cleanup
move.l fh,d1
beq 1$
Dos Close
1$
closedos
closereqtool
;\\
rts
;//Data
DATA
CNOP 0,4
asltag
dc.l ASLFR_TitleText,title
dc.l ASLFR_DoPatterns,TRUE
dc.l ASLFR_InitialDrawer,drawer
dc.l ASLFR_InitialPattern,patt
dc.l 0,0
reqtag
dc.l RTGS_TextFmt,reqtext
dc.l RTGS_Flags,GSREQF_CENTERTEXT
dc.l 0,0
reqtitle
dc.b "Enter your Offsets",0
reqtext
dc.b "Enter your Offsets. For Example:",10
dc.b "12.5.69.4.3",10
dc.b "12 5 69 4 3",10
dc.b "12A5B69s4a3",0
title
dc.b "Select your PassWordFile",0
drawer
dc.b "pp:PassWort",0
patt
dc.b "#?.pw",0
fileout dc.b "ram:passwort.bin",0
outputpuffer2
ds.b anzahlzeich
dc.b 13
BSS
CNOP 0,4
filehandle
ds.l 0
positionen
ds.b maxlength
table
ds.b anzahlzeich
cnop 0,4
LengthOfFile
ds.l 0
BSS
CNOP 4,0
filename ds.l 128
outputbuffer
outputpuffer
ds.b maxlength
CNOP 0,4
zahl ds.l 1
fh ds.l 1
;\\